

// #include "CRC_Check.h"



#ifndef __CRC_CHECK_H__
#define __CRC_CHECK_H__

#include <stdint.h>


typedef struct {
    uint32_t crc;  // unsigned long crc;
} CRC32_CTX;





uint16_t CRC16_modbus_big_end(uint8_t *pushMsg,uint16_t usDataLen);
uint16_t CRC16_modbus_little_end(uint8_t *pushMsg,uint16_t usDataLen);


uint16_t CRC16_modbus_big_end_large(uint8_t *pushMsg,uint32_t usDataLen);

/////康体佳智能路灯控制系统与平台IoT通信协议-V3.0.4（正式版）
/////---iotv30---使用该校验------
uint16_t CRC16_modbus_table16_little_end(uint8_t* data, uint32_t len);

uint16_t CRC16_modbus_table16_big_end(uint8_t* data, uint32_t len);


void CRC32_Init(CRC32_CTX *ctx);
void CRC32_Update(CRC32_CTX *ctx, const uint8_t *data, uint16_t len);
void CRC32_Final(CRC32_CTX *ctx, uint8_t *md);

void CRC32_Test(void);



#endif   //__CRC_CHECK_H__













